/*
 * File:   BlackBoxTestsTableTranscriber.h
 * Author: Guilherme Monteiro
 *
 */

#ifndef BLACKBOXTESTSTABLETRANSCRIBER_H
#define	BLACKBOXTESTSTABLETRANSCRIBER_H

#include <cppunit/extensions/HelperMacros.h>

#include <cstdio>
#include <cxcore.h>
#include <cv.h>
#include <cerrno>
#include <highgui.h>
#include <string.h>
#include <exception>

#include "../headers/TableTranscriber.h"
#include "../headers/GenericModel.h"
#include "../headers/VerticalTableHandler.h"
#include "../headers/ModelListHandler.h"
#include "../headers/NullImageException.h"

using namespace std;

class BlackBoxTestsTableTranscriber : public CPPUNIT_NS::TestFixture {
    CPPUNIT_TEST_SUITE(BlackBoxTestsTableTranscriber);

    CPPUNIT_TEST(caseTestUsingModelEmpty);
    CPPUNIT_TEST(caseTestUsingInvalidBook);
    CPPUNIT_TEST(caseTestUsingBookEmpty);
    CPPUNIT_TEST(caseTestUsingModel1NotRotated90Degrees);
    CPPUNIT_TEST(caseTestUsingModel2NotRotated90Degrees);
    CPPUNIT_TEST(caseTestUsingInvalidModelsList);
    CPPUNIT_TEST(caseTestUsingMultiplesNotRotated90DegreesTablesIntoOnePage);
    
    CPPUNIT_TEST_SUITE_END();

public:
    BlackBoxTestsTableTranscriber();
    virtual ~BlackBoxTestsTableTranscriber();
    void setUp();
    void tearDown();

private:
    void caseTestUsingModelEmpty();
    void caseTestUsingInvalidBook();
    void caseTestUsingBookEmpty();
    void caseTestUsingModel1NotRotated90Degrees();
    void caseTestUsingModel2NotRotated90Degrees();
    void caseTestUsingInvalidModelsList();
    void caseTestUsingMultiplesNotRotated90DegreesTablesIntoOnePage();
};

#endif	/* BLACKBOXTESTSTABLETRANSCRIBER_H */


